#ifndef BUTTON_H
#define BUTTON_H

#include <stdint.h>


enum eBUTTON_STATE
{
    eBT_Init = 0,
    eBT_Selected,
    eBT_Clicked,
};

// typedef void (*MoveTo)(Button *self, int x, int y);
// typedef void (*Resize)(Button *self, int w, int h);
// typedef void (*Select)(Button *self, int selected);
// typedef void (*UpdateText)(Button *self, char *text);
// typedef void (*UpdateBgColor)(Button *self, uint16_t color);
// typedef void (*UpdateSelectedColor)(Button *self, uint16_t color);

typedef struct Button_T
{
    int x;
    int y;
    int w;
    int h;
    char *text;
    char selected;
    uint16_t textColor;
    uint16_t bgColor;
} Button;

Button BuildButton(int x, int y, int w, int h, const char* text, uint16_t textColor, uint16_t bgColor);
void MoveTo(Button *btn, int x, int y);
void Resize(Button *btn, int w, int h);
void Select(Button *btn, int selected);
void UpdateText(Button *btn, char *text);
// void SetColor(Button *btn, uint32_t color);
void SetTextColor(Button *btn, uint16_t color);
void SetBgColor(Button *btn, uint16_t color);
void RenderButton(Button *btn);

#endif // BUTTON_H